package com.as.client.charts;

  
 import com.google.gwt.i18n.client.NumberFormat;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.FloatFieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Viewport;
import com.gwtext.client.widgets.chart.yui.LineChart;
import com.gwtext.client.widgets.chart.yui.NumericAxis;
import com.gwtext.client.widgets.chart.yui.SeriesDefY;
import com.gwtext.client.widgets.form.NumberField;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.grid.CellMetadata;
import com.gwtext.client.widgets.grid.ColumnConfig;
import com.gwtext.client.widgets.grid.ColumnModel;
import com.gwtext.client.widgets.grid.EditorGridPanel;
import com.gwtext.client.widgets.grid.GridEditor;
import com.gwtext.client.widgets.grid.GridPanel;
import com.gwtext.client.widgets.grid.Renderer;
import com.gwtext.client.widgets.grid.event.EditorGridListenerAdapter;
import com.gwtext.client.widgets.layout.VerticalLayout;
   
 public class LineChartSample  {  
     Panel panel = new Panel(); 
     
     public void LineChartSample() {  
   
    	// initWidget(panel);
         panel.setPaddings(15);  
   
         panel.setLayout(new VerticalLayout(15));  
   
         MemoryProxy proxy = new MemoryProxy(getData());  
         RecordDef recordDef = new RecordDef(  
                 new FieldDef[]{  
                         new StringFieldDef("month"),  
                         new FloatFieldDef("rent"),  
                         new FloatFieldDef("utilities")  
                 }  
         );  
   
         ArrayReader reader = new ArrayReader(recordDef);  
         final Store store = new Store(proxy, reader);  
         store.load();  
   
         SeriesDefY[] seriesDef = new SeriesDefY[]{  
   
                 new SeriesDefY("Rent", "rent"),  
                 new SeriesDefY("Utilities", "utilities")  
   
         };  
   
         NumericAxis currencyAxis = new NumericAxis();  
         currencyAxis.setMinimum(800);  
         currencyAxis.setLabelFunction("formatCurrencyAxisLabel");  
         final LineChart chart = new LineChart();  
         chart.setTitle("Monthly Expenses");  
         chart.setWMode("transparent");  
         chart.setStore(store);  
         chart.setSeries(seriesDef);  
         chart.setXField("month");  
         chart.setYAxis(currencyAxis);  
         chart.setDataTipFunction("getDataTipText");  
         chart.setExpressInstall("js/yui/assets/expressinstall.swf");  
         chart.setWidth(500);  
         chart.setHeight(400);  
         panel.setVisible(true);
         panel.add(chart);  
   
   
         Renderer renderer = new Renderer() {  
             public String render(Object value, CellMetadata cellMetadata, Record record, int rowIndex, int colNum, Store store) {  
                 NumberFormat nf = NumberFormat.getCurrencyFormat();  
                 return nf.format(((Number) value).doubleValue());  
             }  
         };  
         ColumnConfig monthConfig = new ColumnConfig("Month", "month", 150, true);  
         TextField monthField = new TextField();  
         monthField.setSelectOnFocus(true);  
         monthConfig.setEditor(new GridEditor(monthField));  
   
         NumberField rentField = new NumberField();  
         rentField.setSelectOnFocus(true);  
   
         ColumnConfig rentConfig = new ColumnConfig("Rent", "rent", 100, true);  
         rentConfig.setEditor(new GridEditor(rentField));  
         rentConfig.setRenderer(renderer);  
   
         NumberField utilitiesField = new NumberField();  
         utilitiesField.setSelectOnFocus(true);  
   
         ColumnConfig utilitiesConfig = new ColumnConfig("Utilities", "utilities", 100, true);  
         utilitiesConfig.setEditor(new GridEditor(utilitiesField));  
         utilitiesConfig.setRenderer(renderer);  
   
         ColumnModel columnModel = new ColumnModel(new ColumnConfig[]{  
                 monthConfig,  
                 rentConfig,  
                 utilitiesConfig  
         });  
   
         EditorGridPanel grid = new EditorGridPanel();  
         grid.setStore(store);  
         grid.setClicksToEdit(1);  
         grid.setColumnModel(columnModel);  
         grid.setWidth(360);  
   
         grid.addEditorGridListener(new EditorGridListenerAdapter() {  
             public void onAfterEdit(GridPanel grid, Record record, String field, Object newValue, Object oldValue, int rowIndex, int colIndex) {  
                 store.commitChanges();  
                 chart.refresh();  
             }  
         });  
   
         panel.add(grid);  
   
         Viewport viewport = new Viewport(panel);  
     }  
   
     private static Object[][] getData() {  
         return new Object[][]{  
                 new Object[]{"January", new Double(880.00), new Double(894.68)},  
                 new Object[]{"February", new Double(880.00), new Double(901.35)},  
                 new Object[]{"March", new Double(880.00), new Double(889.32)},  
                 new Object[]{"April", new Double(880.00), new Double(884.71)},  
                 new Object[]{"May", new Double(910.00), new Double(879.811)},  
                 new Object[]{"June", new Double(910.00), new Double(897.95)}  
         };  
     }  
     
 	public Panel getPanel(){
		return panel;
	}
	
 } 